mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-29 19:12:03 +00:00
revise the way of get job size
This commit is contained in:
parent
2765e2a259
commit
29fee729e3
@ -15,7 +15,6 @@ namespace ErrorCodes
|
|||||||
extern const int CANNOT_COMPRESS;
|
extern const int CANNOT_COMPRESS;
|
||||||
extern const int CANNOT_DECOMPRESS;
|
extern const int CANNOT_DECOMPRESS;
|
||||||
}
|
}
|
||||||
/// DeflateJobHWPool is resource pool for provide the job objects which is required to save context infomation during offload asynchronous compression to IAA.
|
|
||||||
qpl_job * DeflateJobHWPool::jobPool[JOB_POOL_SIZE];
|
qpl_job * DeflateJobHWPool::jobPool[JOB_POOL_SIZE];
|
||||||
std::atomic_bool DeflateJobHWPool::jobLocks[JOB_POOL_SIZE];
|
std::atomic_bool DeflateJobHWPool::jobLocks[JOB_POOL_SIZE];
|
||||||
|
|
||||||
@ -24,9 +23,8 @@ bool DeflateJobHWPool::initJobPool()
|
|||||||
if (job_pool_ready == false)
|
if (job_pool_ready == false)
|
||||||
{
|
{
|
||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
if (qpl_get_job_size(PATH, &size) != QPL_STS_OK)
|
/// get total size required for saving qpl job context
|
||||||
return false;
|
qpl_get_job_size(PATH, &size);
|
||||||
|
|
||||||
for (int i = 0; i < JOB_POOL_SIZE; ++i)
|
for (int i = 0; i < JOB_POOL_SIZE; ++i)
|
||||||
{
|
{
|
||||||
qpl_job * qpl_job_ptr = reinterpret_cast<qpl_job *>(new uint8_t[size]);
|
qpl_job * qpl_job_ptr = reinterpret_cast<qpl_job *>(new uint8_t[size]);
|
||||||
@ -226,20 +224,13 @@ qpl_job * SoftwareCodecDeflate::getJobCodecPtr()
|
|||||||
{
|
{
|
||||||
if (nullptr == jobSWPtr)
|
if (nullptr == jobSWPtr)
|
||||||
{
|
{
|
||||||
qpl_status status;
|
|
||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
// Job initialization
|
qpl_get_job_size(qpl_path_software, &size);
|
||||||
status = qpl_get_job_size(qpl_path_software, &size);
|
|
||||||
if (status != QPL_STS_OK)
|
|
||||||
{
|
|
||||||
throw Exception(
|
|
||||||
"SoftwareCodecDeflate::getJobCodecPtr -> qpl_get_job_size fail:" + std::to_string(status), ErrorCodes::CANNOT_COMPRESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
jobSWbuffer = std::make_unique<uint8_t[]>(size);
|
jobSWbuffer = std::make_unique<uint8_t[]>(size);
|
||||||
jobSWPtr = reinterpret_cast<qpl_job *>(jobSWbuffer.get());
|
jobSWPtr = reinterpret_cast<qpl_job *>(jobSWbuffer.get());
|
||||||
|
// Job initialization
|
||||||
status = qpl_init_job(qpl_path_software, jobSWPtr);
|
auto status = qpl_init_job(qpl_path_software, jobSWPtr);
|
||||||
if (status != QPL_STS_OK)
|
if (status != QPL_STS_OK)
|
||||||
{
|
{
|
||||||
throw Exception(
|
throw Exception(
|
||||||
|
@ -71,7 +71,7 @@ private:
|
|||||||
/// Returns true if Job pool initialization succeeded, otherwise false
|
/// Returns true if Job pool initialization succeeded, otherwise false
|
||||||
bool initJobPool();
|
bool initJobPool();
|
||||||
|
|
||||||
size_t random(uint32_t pool_size) const
|
static size_t random(uint32_t pool_size)
|
||||||
{
|
{
|
||||||
size_t tsc = 0;
|
size_t tsc = 0;
|
||||||
unsigned lo, hi;
|
unsigned lo, hi;
|
||||||
|
Loading…
Reference in New Issue
Block a user