小编CMo*_*use的帖子

填充张量的高效逻辑

我正在尝试填充某种形状的张量,使得张量使用的总内存始终是 512 的倍数,例如 SI32 类型的张量形状 16x1x1x4(乘以 4 以获得总大小)

The total elements are 16x4x1x1 = 64
Total Memory required 64x**4** = 256 (Not multiple of 512)
Padded shape would be 32x1x1x4 = 512
Run Code Online (Sandbox Code Playgroud)

下面的逻辑适用于基本形状,但会破坏形状,例如16x51x1x4 SI32或随机的东西80x240x1x1 U8 填充逻辑如下所示

from functools import reduce

DATA_TYPE_MULTIPLYER = 2 # This would change at runtime with different type e.g. 8 with U8 16 with F16 32 with SI32

ALIGNMENT = 512 #Always Constant
CHAR_BIT = 8    # Always Const for given fixed Arch …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

7
推荐指数
1
解决办法
269
查看次数

使用 LibCurl 进行 HTTP POST

使用 libcurl C++ 发送 POST 请求。我几乎尝试了所有组合,除了我无法弄清楚的正确组合。

curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);  /*Not Recommended to use but since certificates are not available this is a workaround added*/
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, FALSE);  /*Not Recommended to use but since certificates are not available this is a workaround added*/

curl_easy_setopt(curl, CURLOPT_HTTPPOST, TRUE);  //CURLOPT_POST does not work as well
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, sJson);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, bytesCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, bytesCallback);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &headBuffer);
Run Code Online (Sandbox Code Playgroud)

sJson是 a std::string,其主体由 所创建pb2json

我不明白为什么尸体没有被发送?如果是 libcurl,我是否缺少一些 API,任何线索都值得赞赏!

c++ libcurl

3
推荐指数
1
解决办法
4204
查看次数

创建命名管道错误

我正在创建一个命名管道并使用一个函数来执行此操作.这是代码:

HANDLE              tProviderPipe(INVALID_HANDLE_VALUE);
SECURITY_ATTRIBUTES tSecurityAttributes;

tSecurityAttributes.nLength = sizeof(tSecurityAttributes);
tSecurityAttributes.bInheritHandle = FALSE;
tSecurityAttributes.lpSecurityDescriptor = NULL;
while (1)
{
    tProviderPipe = ::CreateNamedPipe(L"\\\\.\\pipe\\MyPipe",
                                      PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
                                      PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
                                      1,
                                      128,
                                      128,
                                      5000,
                                      &tSecurityAttributes);

    if (INVALID_HANDLE_VALUE != tProviderPipe)
    {
        DWORD lLastStatus(GetLastError());
        OHTRACE(Trace::eTAlways, L"Pipe Status: " << (unsigned int)lLastStatus);
        break;
    }
    if (ERROR_PIPE_BUSY != GetLastError())
    {
        DWORD lLastStatus(GetLastError());
        OHTRACE(Trace::eTAlways, L"Pipe Status: " << (unsigned int)lLastStatus);
        break;
    }
    if (!WaitNamedPipe(L"MyPipe", 20000))
    {
        DWORD lLastStatus(GetLastError());
        OHTRACE(Trace::eTAlways, L"WPipe Status: " << (unsigned int)lLastStatus);
    }
Run Code Online (Sandbox Code Playgroud)

调用此函数时,管道创建失败,错误代码为231(即管道忙).我不明白为什么管道繁忙以及创建管道的正确方法是什么?在开始创建管道之前,应该检查和预检查的内容是什么?

c++ windows winapi named-pipes

0
推荐指数
1
解决办法
932
查看次数

标签 统计

c++ ×2

libcurl ×1

named-pipes ×1

python ×1

python-3.x ×1

winapi ×1

windows ×1