intel / qpl

Intel® Query Processing Library (Intel® QPL)
https://intel.github.io/qpl/
MIT License
96 stars 19 forks source link

Question about numa node check #17

Closed Sean58238 closed 1 year ago

Sean58238 commented 1 year ago

In enqueue.cpp has the numa node check logic as following: `if ((device.numa_id() != (uint64_t)numa_id) && (device.numa_id() != (uint64_t)(-1))) { continue; } hw_iaa_descriptor_hint_cpu_cache_as_destination((hw_descriptor *) desc_ptr, device.get_cache_write_available());

    enqueue_failed = device.enqueue_descriptor(desc_ptr);
    if (enqueue_failed) {
        result = HW_ACCELERATOR_WQ_IS_BUSY;
    } else {
        result = HW_ACCELERATOR_STATUS_OK;
        break;
    }

` That may cause the error code #503 on two sockets server which if the device on another numa node. For example: enable iax1 on socket0 ./ll_crc64_example hardware_path The example will be run on the hardware path. terminate called after throwing an instance of 'std::runtime_error' what(): An error acquired during job execution. Aborted (core dumped)

It need to bind NUMA node or CPU can run the example successful, so strongly suggest to explain this problem in online documents.

mzhukova commented 1 year ago

Hi @Sean58238 this is covered in NUMA Support section. If it would make it more clear, we could also briefly mention this in Quick Start, does it make sense to you?

Sean58238 commented 1 year ago

Yes, that's great

Sean58238 commented 1 year ago

For example and test code, could give more tips return if users neglected NUMA feature?

mzhukova commented 1 year ago

Hi @Sean58238, please see updated Quick Start and let me know if this is clear enough.

Sean58238 commented 1 year ago

@mzhukova That's great! DML seem has the same problem,could you give a same tips?

mzhukova commented 1 year ago

That's a good point @Sean58238, let me take a look at DML as well :)