小编tzw*_*ckl的帖子

确定我们的ASM计划的FLOPS

我们必须实现一个ASM程序,用于以坐标方案格式(COOS)和压缩行格式(CSR)乘以稀疏矩阵.现在我们已经实现了所有这些算法,我们想知道它们与通常的矩阵乘法相比有多高效.我们已经实现了代码来测量所有这些算法的运行时间,但现在我们决定我们还想知道我们可以执行的每秒浮点运算数(FLOPS).有关如何测量/计算这个的任何建议吗?

这里有一些关于二手系统的背景信息:

processor   : 0
model name  : ARMv7 Processor rev 2 (v7l)
Features    : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part    : 0xc08
CPU revision    : 2
Run Code Online (Sandbox Code Playgroud)

我们现在的第一个想法是实现一种FPO计数器,我们在每次浮点运算(算术运算以及比较和移动运算)之后递增,但这意味着我们必须在我们的代码中插入递增运算,这也会减慢关闭应用程序...有没有人知道是否有某种硬件计数器可以计算浮点运算的数量,或者可能存在某种性能工具,可用于监控我们的程序并测量FPO的数量.任何建议或指示将不胜感激.

下面是使用计数方法评估矩阵乘法的FLO​​P.我们首先测量了我们感兴趣的每条指令的插入计数器的运行时间,之后我们计算了每秒的浮点运算次数. 矩阵乘法的每秒浮点运算

c assembly arm flops neon

10
推荐指数
1
解决办法
996
查看次数

如何在IO中正确使用readMaybe函数

我大约4个月前开始在Haskell编程,现在我已经到了必须处理Haskell的IO系统的地步.我已经做了很多IO操作,并且没有遇到任何我自己无法解决的问题,但这次我用Google搜索了将近两个小时无法获得有关函数readMaybe的一些信息.所以我有以下问题设置解决,我已经尝试了很多不同的方法来解决它,但我一直从编译器得到相同的失败消息:

No instance for (Read a0) arising from a use of `readMaybe'
The type variable `a0' is ambiguous
Run Code Online (Sandbox Code Playgroud)

我理解编译器想要告诉我什么,但我不知道如何解决这个问题.我已经尝试添加类约束,但没有成功.所以这是我非常小而简单的程序,它只计算用户输入的有效数字的数量.该程序旨在当用户输入空行时终止.这只是我以后想要用于我的项目的辅助功能.

countNumbers :: IO Int
countNumbers = do
       x <- count 0
       return x where
          count :: Int -> IO Int
          count n = do
              line <- getLine
              case line of
                 "" -> do
                    return n
                 _  -> case readMaybe line of
                    Just _ -> do
                       x <- count (n+1)
                       return x
                    Nothing -> do
                       x <- count n
                       return x
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到关于函数readMaybe的很多信息.我唯一能找到的是Haskell库Text.Read: …

haskell

7
推荐指数
2
解决办法
5089
查看次数

Angular 2:获取HTML元素的位置

我正在尝试在Angular 2中实现一个自定义指令,用于移动任意HTML元素.到目前为止一切正常,但我现在不知道如何在点击它并想要开始移动时获取HTML元素的初始位置.我结合topleft风格与这两个主机绑定我的HTML元素:

/** current Y position of the native element. */
@HostBinding('style.top.px') public positionTop: number;

/** current X position of the native element. */
@HostBinding('style.left.px') protected positionLeft: number;
Run Code Online (Sandbox Code Playgroud)

问题在于它们都undefined处于起步阶段.我只能更新也会更新HTML元素的值,但我无法读取它?那是假设那样吗?如果是,我有什么替代方法来检索HTML元素的当前位置.

html5 angular2-hostbinding angular

5
推荐指数
3
解决办法
4万
查看次数

使用带指针的数组注释

我目前无法理解以下场景:我有一个多维数组的字符串,我想通过仅使用指针来解决它,但我总是在指针上使用数组注释时出现分段错误.这只是一个示例代码我想在pthread中使用3D数组,所以我想通过结构作为指针传递它,但它只是不起作用,我想知道为什么?我认为指针和数组在功能上是等价的?以下是示例代码:

#include <stdio.h>

void func(unsigned char ***ptr);

int main() {
  // Image of dimension 10 times 10
  unsigned char image[10][10][3];
  unsigned char ***ptr = image;

  memcpy(image[0][0], "\120\200\12", 3);

  // This works as expected
  printf("Test: %s", image[0][0]);

  func(image);

  return 0;
}

void func(unsigned char ***ptr) {
  // But here I get a Segmentation Fault but why??
  printf("Ptr: %s", ptr[0][0]);
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助 :)

c arrays pointers multidimensional-array

5
推荐指数
1
解决办法
115
查看次数

函数调用默认参数

我写了一篇关于C++编程的考试.有一个问题我和我的教授不同意.问题是,以下功能是否有效:

#include <iostream>
using namespace std;

void f(int=4, long=10, double=3.14);

int main( int argc , char ** argv )
{
    f( , ,8);
      return EXIT_SUCCESS;
}

void f(int i, long l, double d) {
    cout << i << " " << " " << l << " " << d;
}
Run Code Online (Sandbox Code Playgroud)

我说它不会起作用,但我的教授说它肯定会起作用,因为函数声明中的默认参数.我用MSVC尝试过它并没有用.这是编译器特定的吗?我如何说服我的教授在任何编译器中都不起作用,在考试中提高我的分数?

c++ function-call default-parameters c++11

4
推荐指数
1
解决办法
317
查看次数

C++:在多集合容器中使用自己的类

起初我是新来的,英语不是我的母语,所以对任何语法上的失败道歉,但我发现这个社区真的很好,所以我会尽可能准确地问我的问题.

我想将自己的类对象添加到stl容器multiset中,并希望使用我自己在类中定义的重载less运算符对其进行排序.我真的尝试了几种解决方案,但没有真正有效,所以我希望有人可以给我一些有用的提示来解决它.

这是我对类定义的总体看法:

class object {
public:
    int first;
    string second;

    object(int f, string s) {
         first = f;
         second = s;
    }

    bool operator<(const object &comp) {
        return first < comp.first;
        }
};
Run Code Online (Sandbox Code Playgroud)

这是我的第一次尝试,它没有用,所以我也尝试将重载的运算符声明为朋友方法,但它也不起作用.

这是我的主要功能的简短代码摘录:

includes ...
//code omitted
int main() {
    multiset<object*> mmset;

    mmset.insert(new object(10, "test"));
    mmset.insert(new object(11, "test"));

    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

过了一会儿,我开始调试我的代码,并试图找出问题所在,我遇到了以下让我有点怀疑的事情.

来自stl的代码提取:

// TEMPLATE STRUCT less
template<class _Ty>
struct less : public binary_function<_Ty, _Ty, bool>
    {   // functor for operator<
    bool operator()(const _Ty& _Left, const _Ty& …
Run Code Online (Sandbox Code Playgroud)

c++ containers stl operator-overloading multiset

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